using System;
using System.IO;
using System.Collections.Generic;
using System.Security.AccessControl;

namespace Caramel.IO
{
	public interface IDirectoryInfo
	{
		void Create(DirectorySecurity directorySecurity);

		IDirectoryInfo CreateSubdirectory(string path, DirectorySecurity directorySecurity);

		void Delete(bool recursive);

		//DirectorySecurity GetAccessControl(AccessControlSections includeSections);

		IEnumerable<IDirectoryInfo> GetDirectories(string searchPattern, SearchOption searchOption);

		IEnumerable<IFileInfo> GetFiles(string searchPattern, SearchOption searchOption);

		//IEnumerable<IFileInfo> GetFileSystemInfos(string searchPattern);

		void MoveTo(string destDirName);

		//void SetAccessControl(DirectorySecurity directorySecurity);

		IDirectoryInfo Parent { get; }

		IDirectoryInfo Root { get; }
	}
}
